package com.relytosoft.mizar.analyze.system.services.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.relytosoft.dubhe.common.core.base.page.PageQuery;
import com.relytosoft.mizar.analyze.base.entity.pojo.dto.AyGroupBaseDto;
import com.relytosoft.mizar.analyze.system.api.entity.AyGroupBase;
import com.relytosoft.mizar.analyze.system.api.pojo.vo.AyGroupBaseVo;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @author lj
 * @date 2022/5/12 11:53
 */
public interface AyGroupBaseService extends IService<AyGroupBase> {

    /**
     * 分页查询库
     *
     * @param pageQuery   分页条件
     * @param ayGroupBase 查询条件
     * @return 分页数据
     */
    IPage<AyGroupBase> selectAyGroupBasePageList(PageQuery pageQuery, AyGroupBase ayGroupBase);

    /**
     * 添加库
     *
     * @param ayGroupBase 库信息
     */
    boolean addAyGroupBase(AyGroupBase ayGroupBase);


    /**
     * 修改库状态
     *
     * @param list 需要修改的库ID
     */
    ArrayList<String> updateStatus(List<Integer> list);

    /**
     * 修改库
     *
     * @param ayGroupBase 修改的信息
     */
    boolean updateAyGroupBase(AyGroupBase ayGroupBase);

    /**
     * 根据ID查询
     *
     * @param id id
     * @return 库信息
     */
    AyGroupBaseVo findById(Integer id);

    /**
     * 查看人脸库内的人脸信息，包括列表信息，详细信息等
     *
     * @param groupId 需要查询的人脸库
     * @param type    库类型
     * @return 包含人脸信息
     */
    List selectGroupWithPersonInfo(Integer groupId, Integer type);

    /**
     * 查询三方ID和自己库ID映射关系
     *
     * @return 对应关系
     */
    Map<String, Integer> selectPlateformAndGroupId(List<String> groupIds);

    /**
     * 批量查询库信息
     *
     * @param groupIds 库集合
     * @return 库信息
     */
    List<AyGroupBaseDto> selectGroupByIds(List<Integer> groupIds);


    void sendRemoveToKafka(ArrayList<String> arrayList);
}
